草庐IT

c++ - bisonc++ 多态继承

全部标签

java - 分离逻辑与多态性的冲突

我正在尝试用Java创建一个消息传递系统。我有一个接口(interface)Message,它将有多个实现(例如TextMessage和AudioMessage)。该接口(interface)将在服务器和客户端上可用。我的问题是客户端应该根据从服务器接收到的消息类型呈现不同的视觉输出。因此,我要么必须知道我正在处理的消息的类型,我可以使用instanceof()来完成,或者我可以在Message接口(interface)中放置一个抽象方法并利用多态性,这样Message负责创建视觉输出。然而,做任何这些都感觉很脏,因为我必须每次都创建一个新的ifinstanceofblock,或者让M

java - Java中子类可以继承哪些方法?

抱歉,我是Java新手。我正在努力了解Java中的继承和子类/父类(superclass)关系。如果classA是classB的子类,classA的协议(protocol)是包含所有属于classA的方法还是仅包含声明为public和package的方法?classA的协议(protocol)能否具有从其父类(superclass)ClassB继承的私有(private)方法? 最佳答案 首先,“继承”这个词不太合适。你的意思是“可见”。public和protected始终可见private不可见默认(又名“包”)可见性-即没有指定

java - DTO应该使用继承还是组合

在SOA中,如果一些DTO类具有一些重复的字段。使用组合或继承更好,这样就没有重复,或者只使用一个封装所有字段的DTO类。随着我的DTO类的增长,我看到很多重复的字段名称,Sonar报告令人啼笑皆非。什么是最好的方法(或替代方法)。例如publicclassDocDto{privateLongid;privateStringname;privateStringdocType}publicclassDocReviewDto{privateLongid;privateStringname;privateStringstatus;privateStringcomment;}

Java,多重继承。我应该怎么做?

我正在创建一个员工工资系统。我有一个抽象的Employee类。WageEmployee和Manager扩展Employee。然后Programmer和SalesPerson扩展WageEmployee。我的问题是我想创建一个SalesManager。SalesManger通过添加佣金和薪水来计算他们的报酬。所以他们有类型SalesPerson和Manager。我应该创建一个接口(interface)什么?SalesPerson应该扩展什么?很自然地从经理扩展SalesManager,然后使SalesPerson成为一个接口(interface)。但我不能,因为它继承自WageEmplo

java - 为什么 java 多态性在我的示例中不起作用

我有这4个java类:1publicclassRect{doublewidth;doubleheight;Stringcolor;publicRect(){width=0;height=0;color="transparent";}publicRect(doublew,doubleh){width=w;height=h;color="transparent";}doublearea(){returnwidth*height;}}2publicclassPRectextendsRect{doubledepth;publicPRect(doublew,doubleh,doubled){wi

java多态别名问题

如果有3个类。A、B和C。B类扩展A,C类扩展B。A类有equals方法:publicbooleanequals(Aother){...}B类有equals方法:publicbooleanequals(Bother){...}C类有euals方法:publicbooleanequals(Objectother){...}主要有这些代码行:Aa=newA();Cc=newC();a=c;System.out.println(a.equals(c));我不明白为什么要执行A类的equals方法。我知道重载方法是使用静态绑定(bind)绑定(bind)的。但是a在别名后指向“对象的C部分”,

java - 为什么 Java 编译器不支持导入继承?

在Java中,导入与(外部)类相关,因为每个(外部)类都应该在单独的文件中编码。因此,可以声称类定义之前的import...;指令与类相关联(有点像注释)。现在,如果可以继承父类的导入,那将大大减少源文件的困惑。为什么这不可能?即为什么Java编译器不应该考虑基类的导入?注意事项:可能有不止一个答案。我知道如果您让eclipse组织您的导入,这不是什么大问题,无需提及。这是关于“为什么”,而不是“如何”(a-la-this)。 最佳答案 首先,重要的是要注意并非每个类都必须在单独的文件中编码-但每个公共(public)顶级类都必须是

java - 多态调用

我是java新手,在代码中看到很多地方都是前辈声明的ListmyList=newArrayList();(选项1)代替ArrayListmyList=newArrayList();(选项2)你能告诉我为什么人们使用Option1,有什么好处吗?如果我们使用选项2,我们会错过任何优势或功能吗? 最佳答案 选项1被认为是针对接口(interface)进行编程,而选项2是针对实现进行编程。后者有时是必需的,但前者通过确保您不依赖于特定实现提供的方法,使您能够轻松切换实现。此外,如果您创建的方法只需要接口(interface)提供的功能,则

java - Java 中可以扩展(继承)非抽象类吗?

类前面需要加abstract关键字吗?或者它是否需要有未实现的(抽象的)方法?任何普通类都可以扩展吗? 最佳答案 是的,所有非final的方法(static与其他方法也有点不同)都可以被覆盖,除非类本身被声明为final。仅当您不在基类中提供任何实现时才使用抽象方法。 关于java-Java中可以扩展(继承)非抽象类吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/958505

java - 泛型编程是多态性的一个例子吗?

我正在做一项家庭作业(一个项目),其中一个标准是我必须以一种能显着提高我的代码的整体质量或功能的方式使用多态性。我制作了一个如下所示的哈希表:publicclassHashTable{...}其中Hashable是我创建的具有hash()函数的接口(interface)。我知道以这种方式使用泛型可以提高我的代码质量,因为现在HashTable几乎可以处理我想要的任何类型(例如,不仅仅是整数或字符串)。但我不确定它是否展示了多态性。我认为是的,因为E可以是实现Hashable的任何类型。换句话说,HashTable是一个可以处理(实际上)任何类型的类。但我不太确定-是多态性吗?或许我可以